Analysis of stimulation experiments.

library(Seurat)
library(dplyr)
library(ggplot2)
library(scClustViz)
library(SeuratWrappers)

Load integrated object. This object has been integrated with CCA, because there was lots of batch effect between the 0hr tissue and the other two experiments (which merged quite well).

load("~/Dropbox/Zoe/scf_version/analysis/healthy_sc/seurat_objects/no_dropletQC/3391/integrated_3391_stimulation_pmaio_unstim_downsampled_cca_kanchor5_scClustViz.RData")
# Set identity
Idents(scSeurat) <- "integrated_snn_res.0.4"

Check out the UMAP of clusters, original identities, and refined SCINA labels.

DimPlot(scSeurat, label = TRUE)

DimPlot(scSeurat, group.by = "tissue_type", label = FALSE)

DimPlot(scSeurat, group.by = "scina_labels", label = TRUE) & NoLegend()

pdf(file = './figures/stimulation/downsampled_UMAP.pdf')
DimPlot(scSeurat, label = TRUE)
dev.off()
null device 
          1 
pdf(file = './figures/stimulation/downsampled_tissue_type_UMAP.pdf')
DimPlot(scSeurat, group.by = "tissue_type") +
  ggtitle(NULL)
dev.off()
null device 
          1 

Create UMAP of general cell-type labels

plot <- DimPlot(scSeurat, group.by = "general_cell_labels_clusts", label = TRUE, repel = TRUE) +
  labs(title = NULL) & NoLegend()
plot
pdf("./figures/stimulation/downsampled_general_cell_type_UMAP.pdf",
    height = 5, width = 7)
plot
dev.off()
png 
  2 

Look at tissue-type per cluster on a proportional level:

plot + coord_flip()
pdf(file = './figures/stimulation/downsampled_tissue_type_barplot.pdf',
    height = 5, width = 7)
plot + coord_flip()
dev.off()
png 
  2 

Calculate all DE genes

all.markers <- FindAllMarkers(scSeurat,
                              only.pos = TRUE,
                              min.pct = 0.25, 
                              logfc.threshold = 0.25,
                              recorrect_umi = FALSE)
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~05s          
  |++                                                | 3 % ~05s          
  |+++                                               | 4 % ~05s          
  |+++                                               | 5 % ~05s          
  |++++                                              | 6 % ~05s          
  |++++                                              | 7 % ~05s          
  |+++++                                             | 8 % ~05s          
  |+++++                                             | 9 % ~05s          
  |++++++                                            | 11% ~05s          
  |++++++                                            | 12% ~04s          
  |+++++++                                           | 13% ~04s          
  |+++++++                                           | 14% ~04s          
  |++++++++                                          | 15% ~04s          
  |++++++++                                          | 16% ~04s          
  |+++++++++                                         | 17% ~04s          
  |+++++++++                                         | 18% ~04s          
  |++++++++++                                        | 19% ~04s          
  |++++++++++                                        | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |++++++++++++                                      | 22% ~04s          
  |++++++++++++                                      | 23% ~04s          
  |+++++++++++++                                     | 24% ~04s          
  |+++++++++++++                                     | 25% ~04s          
  |++++++++++++++                                    | 26% ~04s          
  |++++++++++++++                                    | 27% ~04s          
  |+++++++++++++++                                   | 28% ~04s          
  |+++++++++++++++                                   | 29% ~04s          
  |++++++++++++++++                                  | 31% ~04s          
  |++++++++++++++++                                  | 32% ~04s          
  |+++++++++++++++++                                 | 33% ~03s          
  |+++++++++++++++++                                 | 34% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |++++++++++++++++++++                              | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |++++++++++++++++++++++                            | 42% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |+++++++++++++++++++++++                           | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |++++++++++++++++++++++++                          | 46% ~03s          
  |++++++++++++++++++++++++                          | 47% ~03s          
  |+++++++++++++++++++++++++                         | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |++++++++++++++++++++++++++++                      | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |++++++++++++++++++++++++++++++++++                | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~06s          
  |++                                                | 2 % ~06s          
  |++                                                | 4 % ~06s          
  |+++                                               | 5 % ~06s          
  |+++                                               | 6 % ~06s          
  |++++                                              | 7 % ~06s          
  |+++++                                             | 8 % ~06s          
  |+++++                                             | 10% ~06s          
  |++++++                                            | 11% ~06s          
  |++++++                                            | 12% ~06s          
  |+++++++                                           | 13% ~06s          
  |++++++++                                          | 14% ~06s          
  |++++++++                                          | 15% ~05s          
  |+++++++++                                         | 17% ~05s          
  |+++++++++                                         | 18% ~05s          
  |++++++++++                                        | 19% ~05s          
  |+++++++++++                                       | 20% ~05s          
  |+++++++++++                                       | 21% ~05s          
  |++++++++++++                                      | 23% ~05s          
  |++++++++++++                                      | 24% ~05s          
  |+++++++++++++                                     | 25% ~05s          
  |++++++++++++++                                    | 26% ~05s          
  |++++++++++++++                                    | 27% ~05s          
  |+++++++++++++++                                   | 29% ~05s          
  |+++++++++++++++                                   | 30% ~05s          
  |++++++++++++++++                                  | 31% ~04s          
  |+++++++++++++++++                                 | 32% ~04s          
  |+++++++++++++++++                                 | 33% ~04s          
  |++++++++++++++++++                                | 35% ~04s          
  |++++++++++++++++++                                | 36% ~04s          
  |+++++++++++++++++++                               | 37% ~04s          
  |++++++++++++++++++++                              | 38% ~04s          
  |++++++++++++++++++++                              | 39% ~04s          
  |+++++++++++++++++++++                             | 40% ~04s          
  |+++++++++++++++++++++                             | 42% ~04s          
  |++++++++++++++++++++++                            | 43% ~04s          
  |+++++++++++++++++++++++                           | 44% ~04s          
  |+++++++++++++++++++++++                           | 45% ~04s          
  |++++++++++++++++++++++++                          | 46% ~03s          
  |++++++++++++++++++++++++                          | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |+++++++++++++++++++++++++                         | 50% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |+++++++++++++++++++++++++++                       | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |++++++++++++++++++++++++++++                      | 56% ~03s          
  |+++++++++++++++++++++++++++++                     | 57% ~03s          
  |++++++++++++++++++++++++++++++                    | 58% ~03s          
  |++++++++++++++++++++++++++++++                    | 60% ~03s          
  |+++++++++++++++++++++++++++++++                   | 61% ~03s          
  |+++++++++++++++++++++++++++++++                   | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |++++++++++++++++++++++++++++++++++                | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=06s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~03s          
  |++                                                | 2 % ~03s          
  |++                                                | 4 % ~03s          
  |+++                                               | 5 % ~03s          
  |+++                                               | 6 % ~03s          
  |++++                                              | 7 % ~03s          
  |+++++                                             | 8 % ~03s          
  |+++++                                             | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |++++++                                            | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 17% ~03s          
  |+++++++++                                         | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |+++++++++++++++                                   | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |++++++++++++++++++                                | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 40% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~07s          
  |++                                                | 2 % ~07s          
  |++                                                | 3 % ~06s          
  |+++                                               | 5 % ~06s          
  |+++                                               | 6 % ~06s          
  |++++                                              | 7 % ~06s          
  |+++++                                             | 8 % ~06s          
  |+++++                                             | 9 % ~06s          
  |++++++                                            | 10% ~06s          
  |++++++                                            | 11% ~06s          
  |+++++++                                           | 13% ~06s          
  |+++++++                                           | 14% ~06s          
  |++++++++                                          | 15% ~06s          
  |+++++++++                                         | 16% ~06s          
  |+++++++++                                         | 17% ~06s          
  |++++++++++                                        | 18% ~05s          
  |++++++++++                                        | 20% ~05s          
  |+++++++++++                                       | 21% ~05s          
  |+++++++++++                                       | 22% ~05s          
  |++++++++++++                                      | 23% ~05s          
  |+++++++++++++                                     | 24% ~05s          
  |+++++++++++++                                     | 25% ~05s          
  |++++++++++++++                                    | 26% ~05s          
  |++++++++++++++                                    | 28% ~05s          
  |+++++++++++++++                                   | 29% ~05s          
  |+++++++++++++++                                   | 30% ~05s          
  |++++++++++++++++                                  | 31% ~05s          
  |+++++++++++++++++                                 | 32% ~05s          
  |+++++++++++++++++                                 | 33% ~04s          
  |++++++++++++++++++                                | 34% ~04s          
  |++++++++++++++++++                                | 36% ~04s          
  |+++++++++++++++++++                               | 37% ~04s          
  |+++++++++++++++++++                               | 38% ~04s          
  |++++++++++++++++++++                              | 39% ~04s          
  |+++++++++++++++++++++                             | 40% ~04s          
  |+++++++++++++++++++++                             | 41% ~04s          
  |++++++++++++++++++++++                            | 43% ~04s          
  |++++++++++++++++++++++                            | 44% ~04s          
  |+++++++++++++++++++++++                           | 45% ~04s          
  |+++++++++++++++++++++++                           | 46% ~04s          
  |++++++++++++++++++++++++                          | 47% ~04s          
  |+++++++++++++++++++++++++                         | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |++++++++++++++++++++++++++                        | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 53% ~03s          
  |++++++++++++++++++++++++++++                      | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |+++++++++++++++++++++++++++++                     | 56% ~03s          
  |+++++++++++++++++++++++++++++                     | 57% ~03s          
  |++++++++++++++++++++++++++++++                    | 59% ~03s          
  |++++++++++++++++++++++++++++++                    | 60% ~03s          
  |+++++++++++++++++++++++++++++++                   | 61% ~03s          
  |++++++++++++++++++++++++++++++++                  | 62% ~03s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |++++++++++++++++++++++++++++++++++                | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=07s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 3 % ~04s          
  |++                                                | 4 % ~04s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 7 % ~03s          
  |++++                                              | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |++++++                                            | 11% ~03s          
  |++++++                                            | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 24% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |++++++++++++++                                    | 26% ~03s          
  |++++++++++++++                                    | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |++++++++++++++++                                  | 30% ~03s          
  |++++++++++++++++                                  | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~09s          
  |++                                                | 2 % ~09s          
  |++                                                | 3 % ~09s          
  |+++                                               | 4 % ~09s          
  |+++                                               | 5 % ~09s          
  |++++                                              | 7 % ~09s          
  |++++                                              | 8 % ~09s          
  |+++++                                             | 9 % ~09s          
  |+++++                                             | 10% ~09s          
  |++++++                                            | 11% ~09s          
  |+++++++                                           | 12% ~09s          
  |+++++++                                           | 13% ~09s          
  |++++++++                                          | 14% ~08s          
  |++++++++                                          | 15% ~08s          
  |+++++++++                                         | 16% ~08s          
  |+++++++++                                         | 18% ~08s          
  |++++++++++                                        | 19% ~08s          
  |++++++++++                                        | 20% ~08s          
  |+++++++++++                                       | 21% ~08s          
  |+++++++++++                                       | 22% ~08s          
  |++++++++++++                                      | 23% ~08s          
  |+++++++++++++                                     | 24% ~07s          
  |+++++++++++++                                     | 25% ~07s          
  |++++++++++++++                                    | 26% ~07s          
  |++++++++++++++                                    | 27% ~07s          
  |+++++++++++++++                                   | 29% ~07s          
  |+++++++++++++++                                   | 30% ~07s          
  |++++++++++++++++                                  | 31% ~07s          
  |++++++++++++++++                                  | 32% ~07s          
  |+++++++++++++++++                                 | 33% ~07s          
  |++++++++++++++++++                                | 34% ~06s          
  |++++++++++++++++++                                | 35% ~06s          
  |+++++++++++++++++++                               | 36% ~06s          
  |+++++++++++++++++++                               | 37% ~06s          
  |++++++++++++++++++++                              | 38% ~06s          
  |++++++++++++++++++++                              | 40% ~06s          
  |+++++++++++++++++++++                             | 41% ~06s          
  |+++++++++++++++++++++                             | 42% ~06s          
  |++++++++++++++++++++++                            | 43% ~06s          
  |++++++++++++++++++++++                            | 44% ~06s          
  |+++++++++++++++++++++++                           | 45% ~05s          
  |++++++++++++++++++++++++                          | 46% ~05s          
  |++++++++++++++++++++++++                          | 47% ~05s          
  |+++++++++++++++++++++++++                         | 48% ~05s          
  |+++++++++++++++++++++++++                         | 49% ~05s          
  |++++++++++++++++++++++++++                        | 51% ~05s          
  |++++++++++++++++++++++++++                        | 52% ~05s          
  |+++++++++++++++++++++++++++                       | 53% ~05s          
  |+++++++++++++++++++++++++++                       | 54% ~05s          
  |++++++++++++++++++++++++++++                      | 55% ~04s          
  |+++++++++++++++++++++++++++++                     | 56% ~04s          
  |+++++++++++++++++++++++++++++                     | 57% ~04s          
  |++++++++++++++++++++++++++++++                    | 58% ~04s          
  |++++++++++++++++++++++++++++++                    | 59% ~04s          
  |+++++++++++++++++++++++++++++++                   | 60% ~04s          
  |+++++++++++++++++++++++++++++++                   | 62% ~04s          
  |++++++++++++++++++++++++++++++++                  | 63% ~04s          
  |++++++++++++++++++++++++++++++++                  | 64% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~03s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~03s          
  |++++++++++++++++++++++++++++++++++                | 67% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=10s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~07s          
  |++                                                | 2 % ~07s          
  |++                                                | 4 % ~06s          
  |+++                                               | 5 % ~06s          
  |+++                                               | 6 % ~06s          
  |++++                                              | 7 % ~06s          
  |+++++                                             | 8 % ~06s          
  |+++++                                             | 9 % ~06s          
  |++++++                                            | 11% ~06s          
  |++++++                                            | 12% ~06s          
  |+++++++                                           | 13% ~06s          
  |++++++++                                          | 14% ~06s          
  |++++++++                                          | 15% ~06s          
  |+++++++++                                         | 16% ~05s          
  |+++++++++                                         | 18% ~05s          
  |++++++++++                                        | 19% ~05s          
  |++++++++++                                        | 20% ~05s          
  |+++++++++++                                       | 21% ~05s          
  |++++++++++++                                      | 22% ~05s          
  |++++++++++++                                      | 24% ~05s          
  |+++++++++++++                                     | 25% ~05s          
  |+++++++++++++                                     | 26% ~05s          
  |++++++++++++++                                    | 27% ~05s          
  |+++++++++++++++                                   | 28% ~05s          
  |+++++++++++++++                                   | 29% ~05s          
  |++++++++++++++++                                  | 31% ~05s          
  |++++++++++++++++                                  | 32% ~05s          
  |+++++++++++++++++                                 | 33% ~04s          
  |++++++++++++++++++                                | 34% ~04s          
  |++++++++++++++++++                                | 35% ~04s          
  |+++++++++++++++++++                               | 36% ~04s          
  |+++++++++++++++++++                               | 38% ~04s          
  |++++++++++++++++++++                              | 39% ~04s          
  |++++++++++++++++++++                              | 40% ~04s          
  |+++++++++++++++++++++                             | 41% ~04s          
  |++++++++++++++++++++++                            | 42% ~04s          
  |++++++++++++++++++++++                            | 44% ~04s          
  |+++++++++++++++++++++++                           | 45% ~04s          
  |+++++++++++++++++++++++                           | 46% ~04s          
  |++++++++++++++++++++++++                          | 47% ~04s          
  |+++++++++++++++++++++++++                         | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |++++++++++++++++++++++++++                        | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 53% ~03s          
  |++++++++++++++++++++++++++++                      | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |+++++++++++++++++++++++++++++                     | 56% ~03s          
  |+++++++++++++++++++++++++++++                     | 58% ~03s          
  |++++++++++++++++++++++++++++++                    | 59% ~03s          
  |++++++++++++++++++++++++++++++                    | 60% ~03s          
  |+++++++++++++++++++++++++++++++                   | 61% ~03s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=07s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~05s          
  |++                                                | 4 % ~05s          
  |+++                                               | 5 % ~05s          
  |++++                                              | 6 % ~05s          
  |++++                                              | 7 % ~05s          
  |+++++                                             | 9 % ~05s          
  |+++++                                             | 10% ~05s          
  |++++++                                            | 11% ~05s          
  |+++++++                                           | 12% ~05s          
  |+++++++                                           | 13% ~05s          
  |++++++++                                          | 15% ~05s          
  |++++++++                                          | 16% ~04s          
  |+++++++++                                         | 17% ~04s          
  |++++++++++                                        | 18% ~04s          
  |++++++++++                                        | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |+++++++++++                                       | 22% ~04s          
  |++++++++++++                                      | 23% ~04s          
  |+++++++++++++                                     | 24% ~04s          
  |+++++++++++++                                     | 26% ~04s          
  |++++++++++++++                                    | 27% ~04s          
  |+++++++++++++++                                   | 28% ~04s          
  |+++++++++++++++                                   | 29% ~04s          
  |++++++++++++++++                                  | 30% ~04s          
  |++++++++++++++++                                  | 32% ~04s          
  |+++++++++++++++++                                 | 33% ~04s          
  |++++++++++++++++++                                | 34% ~04s          
  |++++++++++++++++++                                | 35% ~04s          
  |+++++++++++++++++++                               | 37% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |+++++++++++++++++++++                             | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |++++++++++++++++++++++                            | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |++++++++++++++++++++++++                          | 46% ~03s          
  |++++++++++++++++++++++++                          | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |+++++++++++++++++++++++++                         | 50% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |+++++++++++++++++++++++++++                       | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |+++++                                             | 8 % ~04s          
  |+++++                                             | 9 % ~04s          
  |++++++                                            | 10% ~04s          
  |++++++                                            | 11% ~04s          
  |+++++++                                           | 12% ~04s          
  |+++++++                                           | 13% ~04s          
  |++++++++                                          | 14% ~04s          
  |++++++++                                          | 15% ~04s          
  |+++++++++                                         | 16% ~04s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |+++++++++++++                                     | 24% ~03s          
  |+++++++++++++                                     | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |++++++++++++++                                    | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |+++++++++++++++                                   | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |++++++++++++++++                                  | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |+++++++++++++++++                                 | 34% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Calculating cluster 9

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~05s          
  |++                                                | 3 % ~05s          
  |+++                                               | 5 % ~05s          
  |+++                                               | 6 % ~05s          
  |++++                                              | 7 % ~05s          
  |+++++                                             | 8 % ~05s          
  |+++++                                             | 9 % ~05s          
  |++++++                                            | 10% ~05s          
  |++++++                                            | 11% ~05s          
  |+++++++                                           | 13% ~05s          
  |+++++++                                           | 14% ~04s          
  |++++++++                                          | 15% ~04s          
  |+++++++++                                         | 16% ~04s          
  |+++++++++                                         | 17% ~04s          
  |++++++++++                                        | 18% ~04s          
  |++++++++++                                        | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |+++++++++++                                       | 22% ~04s          
  |++++++++++++                                      | 23% ~04s          
  |+++++++++++++                                     | 24% ~04s          
  |+++++++++++++                                     | 25% ~04s          
  |++++++++++++++                                    | 26% ~04s          
  |++++++++++++++                                    | 28% ~04s          
  |+++++++++++++++                                   | 29% ~04s          
  |+++++++++++++++                                   | 30% ~04s          
  |++++++++++++++++                                  | 31% ~04s          
  |+++++++++++++++++                                 | 32% ~04s          
  |+++++++++++++++++                                 | 33% ~03s          
  |++++++++++++++++++                                | 34% ~03s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |+++++++++++++++++++++                             | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |++++++++++++++++++++++                            | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |+++++++++++++++++++++++                           | 46% ~03s          
  |++++++++++++++++++++++++                          | 47% ~03s          
  |+++++++++++++++++++++++++                         | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |++++++++++++++++++++++++++                        | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |++++++++++++++++++++++++++++++++++                | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
Calculating cluster 10

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~03s          
  |++                                                | 3 % ~03s          
  |+++                                               | 4 % ~02s          
  |+++                                               | 6 % ~02s          
  |++++                                              | 7 % ~02s          
  |+++++                                             | 8 % ~02s          
  |+++++                                             | 10% ~02s          
  |++++++                                            | 11% ~02s          
  |+++++++                                           | 13% ~02s          
  |++++++++                                          | 14% ~02s          
  |++++++++                                          | 15% ~02s          
  |+++++++++                                         | 17% ~02s          
  |++++++++++                                        | 18% ~02s          
  |++++++++++                                        | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 28% ~02s          
  |+++++++++++++++                                   | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 42% ~01s          
  |++++++++++++++++++++++                            | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 46% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster 11

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |+++++                                             | 9 % ~04s          
  |+++++                                             | 10% ~04s          
  |++++++                                            | 11% ~04s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 19% ~03s          
  |++++++++++                                        | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |+++++++++++++                                     | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |+++++++++++++++                                   | 28% ~03s          
  |+++++++++++++++                                   | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |+++++++++++++++++                                 | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 44% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Calculating cluster 12

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~10s          
  |++                                                | 2 % ~10s          
  |++                                                | 3 % ~09s          
  |+++                                               | 4 % ~09s          
  |+++                                               | 6 % ~09s          
  |++++                                              | 7 % ~09s          
  |++++                                              | 8 % ~09s          
  |+++++                                             | 9 % ~09s          
  |+++++                                             | 10% ~09s          
  |++++++                                            | 11% ~09s          
  |+++++++                                           | 12% ~09s          
  |+++++++                                           | 13% ~08s          
  |++++++++                                          | 14% ~08s          
  |++++++++                                          | 16% ~08s          
  |+++++++++                                         | 17% ~08s          
  |+++++++++                                         | 18% ~08s          
  |++++++++++                                        | 19% ~08s          
  |++++++++++                                        | 20% ~08s          
  |+++++++++++                                       | 21% ~08s          
  |++++++++++++                                      | 22% ~08s          
  |++++++++++++                                      | 23% ~07s          
  |+++++++++++++                                     | 24% ~07s          
  |+++++++++++++                                     | 26% ~07s          
  |++++++++++++++                                    | 27% ~07s          
  |++++++++++++++                                    | 28% ~07s          
  |+++++++++++++++                                   | 29% ~07s          
  |+++++++++++++++                                   | 30% ~07s          
  |++++++++++++++++                                  | 31% ~07s          
  |+++++++++++++++++                                 | 32% ~07s          
  |+++++++++++++++++                                 | 33% ~07s          
  |++++++++++++++++++                                | 34% ~06s          
  |++++++++++++++++++                                | 36% ~06s          
  |+++++++++++++++++++                               | 37% ~06s          
  |+++++++++++++++++++                               | 38% ~06s          
  |++++++++++++++++++++                              | 39% ~06s          
  |++++++++++++++++++++                              | 40% ~06s          
  |+++++++++++++++++++++                             | 41% ~06s          
  |++++++++++++++++++++++                            | 42% ~06s          
  |++++++++++++++++++++++                            | 43% ~06s          
  |+++++++++++++++++++++++                           | 44% ~05s          
  |+++++++++++++++++++++++                           | 46% ~05s          
  |++++++++++++++++++++++++                          | 47% ~05s          
  |++++++++++++++++++++++++                          | 48% ~05s          
  |+++++++++++++++++++++++++                         | 49% ~05s          
  |+++++++++++++++++++++++++                         | 50% ~05s          
  |++++++++++++++++++++++++++                        | 51% ~05s          
  |+++++++++++++++++++++++++++                       | 52% ~05s          
  |+++++++++++++++++++++++++++                       | 53% ~05s          
  |++++++++++++++++++++++++++++                      | 54% ~04s          
  |++++++++++++++++++++++++++++                      | 56% ~04s          
  |+++++++++++++++++++++++++++++                     | 57% ~04s          
  |+++++++++++++++++++++++++++++                     | 58% ~04s          
  |++++++++++++++++++++++++++++++                    | 59% ~04s          
  |++++++++++++++++++++++++++++++                    | 60% ~04s          
  |+++++++++++++++++++++++++++++++                   | 61% ~04s          
  |++++++++++++++++++++++++++++++++                  | 62% ~04s          
  |++++++++++++++++++++++++++++++++                  | 63% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~03s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~03s          
  |++++++++++++++++++++++++++++++++++                | 67% ~03s          
  |++++++++++++++++++++++++++++++++++                | 68% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=10s  
Calculating cluster 13

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~03s          
  |++++                                              | 7 % ~03s          
  |+++++                                             | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |++++++                                            | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |+++++++++++++                                     | 24% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |++++++++++++++                                    | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |+++++++++++++++                                   | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |++++++++++++++++                                  | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |++++++++++++++++++++++++++++                      | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
top.markers <- all.markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_log2FC)
top.markers
write.table(all.markers,
            file = "./figures/stimulation/downsampled_cluster_markers.tsv",
            sep = "\t",
            quote = FALSE,
            row.names = FALSE)

Calculate DE genes: for each cluster, compare stim VS unstim

for (clust in levels(as.factor(Idents(scSeurat)))) {
  cells_stim <- colnames(scSeurat)[Idents(scSeurat) == clust & scSeurat$tissue_type == "6hrs_PMAIO"]
  cells_unstim <- colnames(scSeurat)[Idents(scSeurat) == clust & scSeurat$tissue_type == "6hrs_unstim"]
  markers <- RunPresto(scSeurat,
                       ident.1 = cells_stim,
                       ident.2 = cells_unstim,
                       only.pos = FALSE,
                       min.pct = 0.25,
                       logfc.threshold = 0.25,
                       recorrect_umi = FALSE)
  write.table(markers,
              file = paste("./figures/stimulation/downsampled_markers_cluster", 
                           clust ,"_stim_vs_unstim.tsv", sep = ""),
              sep = "\t",
              quote = FALSE,
              row.names = TRUE)
}

Look for T-cell signatures.

FeaturePlot(scSeurat, features = c("CD3E", "NKG7"))

FeaturePlot(scSeurat, features = c("LEF1", "XCL1;XCL2"))

FeaturePlot(scSeurat, features = c("TOX", "CD8A"))

FeaturePlot(scSeurat, features = c("CCR7"))

Look for macrophage signatures:

FeaturePlot(scSeurat, features = c("LGALS1", "TYROBP"))

FeaturePlot(scSeurat, features = c("MARCO", "C1QC"))

FeaturePlot(scSeurat, features = c("LYZ-1", "S100A8"))

FeaturePlot(scSeurat, features = c("DEFA6;DEFA4;DEFA5", "CTSS"))

FeaturePlot(scSeurat, features = c("FLT3", "S100A12"))

Look for B and plasma cell signatures

FeaturePlot(scSeurat, features = c("CD79B", "JCHAIN"))

Cluster 12 is the only cluster that is obviously dominated by the unstimulated experiments. What cells are these? Looks like they are hepatocytes. A lot of the markers are periportal, but all hepatocytes are in this cluster.

# Isolate DE genes
clust11 <- sCVdata_list$res.0.4@DEvsRest$`12`[order(sCVdata_list$res.0.4@DEvsRest$`12`$Wstat,
                                                    decreasing = TRUE), ]
rownames(clust11)[1:50]
 [1] "PAH"                                      "LOC114082496"                             "TDO2"                                     "MAT1A"                                    "GYS2"                                    
 [6] "SLCO1B3;SLCO1B3-SLCO1B7;SLCO1B7;SLCO1B1"  "FBP1"                                     "CPS1"                                     "SLC2A2"                                   "ALDOB"                                   
[11] "MTSS1"                                    "IGFBP1"                                   "CYP3A4;CYP3A7-CYP3A51P;CYP3A7-2"          "mikado.WCK01-AAH20201022-F8-rsc00143G668" "PCK1"                                    
[16] "SHMT1"                                    "CYP3A4;CYP3A7-CYP3A51P;CYP3A7"            "ARG1"                                     "CYP3A4;CYP3A7-CYP3A51P;CYP3A7-3"          "LOC107139912"                            
[21] "ALB-1"                                    "SLC38A4"                                  "LOC107139914"                             "SORBS2"                                   "TAT"                                     
[26] "C5-1"                                     "KLKB1"                                    "Slc22a19-1"                               "G6PC1"                                    "RBP4"                                    
[31] "AGMO"                                     "HSD17B11"                                 "CMBL"                                     "SLC25A13"                                 "ZBTB16"                                  
[36] "C8G"                                      "PYGL"                                     "HSD11B1"                                  "mikado.WCK01-AAH20201022-F8-rsc00060G101" "CES3"                                    
[41] "MTARC2"                                   "IDO2"                                     "AQP9"                                     "ACACB"                                    "GOT1"                                    
[46] "CFI"                                      "NR1I2"                                    "ABCB11"                                   "SOX5"                                     "BHMT2"                                   
FeaturePlot(scSeurat, features = c("PAH","PCK1"))

FeaturePlot(scSeurat, features = c("CYP2E1","FETUB"))

FeaturePlot(scSeurat, features = c("ACACB","ELOVL6"))

FeaturePlot(scSeurat, features = c("POLR2D", "ALB-1"))

Let’s look at some of the key markers that Sonya sent: IL2, IL4, IL6, IL7, IL10, IL12A, TGFB

FeaturePlot(scSeurat, features = c("IL2", "IL4"))

FeaturePlot(scSeurat, features = c("IL6", "IL6-1"))

FeaturePlot(scSeurat, features = c("IL7", "IL10"))

FeaturePlot(scSeurat, features = c("IL12A", "TGFB1"))

It’s pretty hard to see which cytokines are expressed in which samples, so I’m going to try splitting up the samples.

DimPlot(scSeurat, split.by = "tissue_type", label = TRUE) & NoLegend()
pdf(file = './figures/stimulation/downsampled_UMAP_split.pdf',
    height = 4, width = 8)
DimPlot(scSeurat, split.by = "tissue_type", label = TRUE) & NoLegend()
dev.off()
png 
  2 

Now let’s take a look at the features on this split plot.

genes <- c("IL2","IL4","IL6","IL7","IL10","IL12A","TGFB1","TGFB2","TGFB3","TNF","IL18","IL2RA","CCL5","IFNG","LIF", "CCL3L1;CCL3L3;CCL3;CCL18","CCL4L2;CCL4L1;CCL4")
for (gene in genes) {
  print(FeaturePlot(scSeurat, feature = gene, split.by = "tissue_type"))
  pdf(paste("figures/stimulation/downsampled_UMAP_split_", gene, ".pdf", sep = ""),
      height = 4, width = 8)
  print(FeaturePlot(scSeurat, feature = gene, split.by = "tissue_type"))
  dev.off()
}
Warning: All cells have the same value (0) of “IL2”

More plots

Cluster 2 looks like it generally has more IL genes expressed. Isolate DE genes for this cluster.

clust1 <- sCVdata_list$res.0.4@DEvsRest$`2`[order(sCVdata_list$res.0.4@DEvsRest$`2`$Wstat,
                                                    decreasing = TRUE), ]
cat(rownames(clust1)[1:50])
PTPRC TOX PRKCH INPP4B mikado.WCK01-AAH20201022-F8-rsc00190G443 ARID5B IKZF3 ARHGAP15 SATB1 DOCK10 TRPS1 RASA2 SAMSN1 NSD3 MBNL1 SH3KBP1 EMB SYTL3 ICOS mikado.WCK01-AAH20201022-F8-rsc00083G981 mikado.WCK01-AAH20201022-F8-rsc00275G164 THEMIS MSI2 SLAMF1 PITPNC1 NXF2;NXF2B;NXF5 SRSF7 IKZF1 RAPGEF6 STAT4 SLC38A1 RAP1A RABGAP1L ZC3HAV1 BCL2 TESPA1 APBB1IP GIMAP7 DHX8 DDX5 UBAC2 HUWE1 CD3E CTLA4 CD44 GIMAP1 RGS1 MTHFD1L RIPOR2 TANK

Visualise these genes in violin plots.

Interpretation: Now I see that IL2 and IL4 are expressed in more than just cluster 2, but it is nearly always in PMAIO. Cluster 8 is definitely where IL6 is expressed. IL7 is a bit more spread out across treatment types, but it’s definitely present in PMAIO in clusters 4, 5, and 11. Cluster 11 is plasma cells, but I’m honestly not sure of 4 and 5 - low signal hepatocytes? IL10 is in clusters 2 and 11 PMAIO. IL12A is a bit more in 4 and 5 PMAIO.

VlnPlot(scSeurat, feature = "IL2", split.by = "tissue_type") # Only in PMAIO cluster 2

VlnPlot(scSeurat, feature = "IL4", split.by = "tissue_type") # Only in PMAIO cluster 2

VlnPlot(scSeurat, feature = "IL6", split.by = "tissue_type") # Stronger in endo and mesem PMAIO

VlnPlot(scSeurat, feature = "IL6-1", split.by = "tissue_type") # No signal

VlnPlot(scSeurat, feature = "IL7", split.by = "tissue_type") # More in PMAIO cluster 4/5

VlnPlot(scSeurat, feature = "IL10", split.by = "tissue_type") # More in PMAIO cluster 2

VlnPlot(scSeurat, feature = "IL12A", split.by = "tissue_type") # A bit more in 1,4,5

VlnPlot(scSeurat, feature = "TGFB1", split.by = "tissue_type") # Pretty even across all

VlnPlot(scSeurat, feature = "TNF", split.by = "tissue_type")

Make Violin plots with ggplot

genes <- c("IL2","IL4","IL6","IL7","IL10","IL12A","TGFB1","TGFB2","TGFB3","TNF","IL18","IL2RA","CCL5","IFNG","LIF","CCL3L1;CCL3L3;CCL3;CCL18","CCL4L2;CCL4L1;CCL4")
for(gene in genes) {
  vln_df = data.frame(gene = scSeurat[["RNA"]]@data[gene,], 
                      Cluster = Idents(scSeurat), 
                      tissue_type = scSeurat$tissue_type)
  plot <- ggplot(vln_df, aes(x = Cluster, y = gene)) + 
    geom_violin(aes(fill = tissue_type), trim=TRUE, scale = "width") +
    ylab(gene) +
    theme_bw()
  print(plot)
  pdf(file = paste("figures/stimulation/downsampled_vlnPlot_split_", gene, ".pdf", sep = ""))
  print(plot) # Need print function because R doesn't autoprint in loops
  dev.off()
}

Looking for more genes

gene <- "IL18"
vln_df = data.frame(gene = scSeurat[["RNA"]]@data[gene,], 
                      Cluster = Idents(scSeurat), 
                      tissue_type = scSeurat$tissue_type)
  plot <- ggplot(vln_df, aes(x = Cluster, y = gene)) + 
    geom_violin(aes(fill = tissue_type), trim=TRUE, scale = "width") +
    ylab(gene) +
    theme_bw()
  print(plot)

Make heatmap with select genes

genes <- c("IL2","IL4","IL6","IL7","IL10","IL12A","TGFB1","TGFB2","TGFB3","TNF","IL18","IL2RA","CCL5","IFNG","LIF","CCL3L1;CCL3L3;CCL3;CCL18","CCL4L2;CCL4L1;CCL4")
DoHeatmap(scSeurat, features = genes, group.by = "integrated_snn_res.0.4",
          size = 3, 
          angle = 90, assay = "RNA", slot = "data") +
  NoLegend() +
  theme(text = element_text(size = 7))

DotPlot(scSeurat,
        assay = "RNA",
        features = genes,
        group.by = "integrated_snn_res.0.4",
        split.by =  "tissue_type")

DotPlot(scSeurat,
        assay = "RNA",
        features = genes,
        group.by = "tissue_type")
Warning: Scaling data with a low number of groups may produce misleading results

DotPlot(scSeurat,
        assay = "RNA",
        features = genes,
        group.by = "integrated_snn_res.0.4")

Perform DE test on T-cells from PMAIO vs unstim T-cells. I see TNF, IL2RA, but I also see hepatocyte genes like ALB-1, STAT3

cat(row.names(de_results)[1:100], sep = " ")
LOC107134468 CCL4L2;CCL4L1;CCL4 mikado.WCK01-AAH20201022-F8-rsc00073G191 MTHFD1L NFKB1 NXF2;NXF2B;NXF5 CCND3 IFNG SATB1 SKAP1 ARID5B mikado.WCK01-AAH20201022-F8-rsc00334G1 CCL3L1;CCL3L3;CCL3;CCL18 SLAMF1 CD200 GIMAP7 LOC114086011-6 GBP7;GBP4 CBLB TRAF3IP3 NR4A3 ALB-1 TNFRSF9 SLC25A26 SYNE1 STAT3 UTRN HUWE1 PDE7A IL2RA PTPRCAP APOA1 TNRC6B Ifi214;Ifi209 ETS1 ANKRD44 MAPK6 PDE3B RESF1 CD27 mikado.WCK01-AAH20201022-F8-rsc00138G153 PICALM JARID2 MDN1 CHIC1 CCL3L1;CCL3L3;CCL3;CCL18-2 CKLF;CKLF-CMTM1 HECA FOXN3 MED13L SEC23B ZEB2 AMN1 CD3G SEC14L1 BATF LNPEP IRF4 ALB LOC107134769-1 IQGAP2 LOC114086011-12 SERPINA1 mikado.WCK01-AAH20201022-F8-rsc00234G885 TMEM156 STK4 ATP8A1 PECAM1 FAM13A MTHFD2 CELF2 SAMSN1 NUCB2 GIMAP1 SND1 VMP1 MLLT3 ASAP1 RBP4 TNF CRTAM FYN ACTB mikado.WCK01-AAH20201022-F8-rsc00190G443 PPP3CC HBS1L TTC27 B4GALT5 DDX5 ARHGDIB LAT CXCL2;CXCL3;CXCL1-1 ITM2B SENP7 DOCK8 RIPOR2 APBB1IP TRAF3 SAMHD1 CD99
LS0tCnRpdGxlOiAiU3RpbXVsYXRpb24gZXhwZXJpbWVudHMiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgZGZfcHJpbnQ6IHBhZ2VkCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAotLS0KCkFuYWx5c2lzIG9mIHN0aW11bGF0aW9uIGV4cGVyaW1lbnRzLgoKYGBge3J9CmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoc2NDbHVzdFZpeikKbGlicmFyeShTZXVyYXRXcmFwcGVycykKYGBgCgpMb2FkIGludGVncmF0ZWQgb2JqZWN0LiBUaGlzIG9iamVjdCBoYXMgYmVlbiBpbnRlZ3JhdGVkIHdpdGggQ0NBLCBiZWNhdXNlIHRoZXJlIHdhcyBsb3RzIG9mIGJhdGNoIGVmZmVjdCBiZXR3ZWVuIHRoZSAwaHIgdGlzc3VlIGFuZCB0aGUgb3RoZXIgdHdvIGV4cGVyaW1lbnRzICh3aGljaCBtZXJnZWQgcXVpdGUgd2VsbCkuCgpgYGB7cn0KbG9hZCgifi9Ecm9wYm94L1pvZS9zY2ZfdmVyc2lvbi9hbmFseXNpcy9oZWFsdGh5X3NjL3NldXJhdF9vYmplY3RzL25vX2Ryb3BsZXRRQy8zMzkxL2ludGVncmF0ZWRfMzM5MV9zdGltdWxhdGlvbl9wbWFpb191bnN0aW1fZG93bnNhbXBsZWRfY2NhX2thbmNob3I1X3NjQ2x1c3RWaXouUkRhdGEiKQojIFNldCBpZGVudGl0eQpJZGVudHMoc2NTZXVyYXQpIDwtICJpbnRlZ3JhdGVkX3Nubl9yZXMuMC40IgpgYGAKCkNoZWNrIG91dCB0aGUgVU1BUCBvZiBjbHVzdGVycywgb3JpZ2luYWwgaWRlbnRpdGllcywgYW5kIHJlZmluZWQgU0NJTkEgbGFiZWxzLgoKYGBge3J9CkRpbVBsb3Qoc2NTZXVyYXQsIGxhYmVsID0gVFJVRSkKRGltUGxvdChzY1NldXJhdCwgZ3JvdXAuYnkgPSAidGlzc3VlX3R5cGUiLCBsYWJlbCA9IEZBTFNFKQpEaW1QbG90KHNjU2V1cmF0LCBncm91cC5ieSA9ICJzY2luYV9sYWJlbHMiLCBsYWJlbCA9IFRSVUUpICYgTm9MZWdlbmQoKQpgYGAKCmBgYHtyfQpwZGYoZmlsZSA9ICcuL2ZpZ3VyZXMvc3RpbXVsYXRpb24vZG93bnNhbXBsZWRfVU1BUC5wZGYnKQpEaW1QbG90KHNjU2V1cmF0LCBsYWJlbCA9IFRSVUUpCmRldi5vZmYoKQpwZGYoZmlsZSA9ICcuL2ZpZ3VyZXMvc3RpbXVsYXRpb24vZG93bnNhbXBsZWRfdGlzc3VlX3R5cGVfVU1BUC5wZGYnKQpEaW1QbG90KHNjU2V1cmF0LCBncm91cC5ieSA9ICJ0aXNzdWVfdHlwZSIpICsKICBnZ3RpdGxlKE5VTEwpCmRldi5vZmYoKQpgYGAKCkNyZWF0ZSBVTUFQIG9mIGdlbmVyYWwgY2VsbC10eXBlIGxhYmVscwoKYGBge3J9CnBsb3QgPC0gRGltUGxvdChzY1NldXJhdCwgZ3JvdXAuYnkgPSAiZ2VuZXJhbF9jZWxsX2xhYmVsc19jbHVzdHMiLCBsYWJlbCA9IFRSVUUsIHJlcGVsID0gVFJVRSkgKwogIGxhYnModGl0bGUgPSBOVUxMKSAmIE5vTGVnZW5kKCkKcGxvdApwZGYoIi4vZmlndXJlcy9zdGltdWxhdGlvbi9kb3duc2FtcGxlZF9nZW5lcmFsX2NlbGxfdHlwZV9VTUFQLnBkZiIsCiAgICBoZWlnaHQgPSA1LCB3aWR0aCA9IDcpCnBsb3QKZGV2Lm9mZigpCmBgYAoKCkxvb2sgYXQgdGlzc3VlLXR5cGUgcGVyIGNsdXN0ZXIgb24gYSBwcm9wb3J0aW9uYWwgbGV2ZWw6CgpgYGB7cn0KcHQgPC0gdGFibGUoc2NTZXVyYXQkZ2VuZXJhbF9jZWxsX2xhYmVsc19jbHVzdHMsIHNjU2V1cmF0JHRpc3N1ZV90eXBlKQpwdCA8LSBhcy5kYXRhLmZyYW1lKHB0KQpwbG90IDwtIGdncGxvdChwdCwgYWVzKHggPSBWYXIxLCB5ID0gRnJlcSwgZmlsbCA9IFZhcjIpKSArCiAgdGhlbWVfYncoYmFzZV9zaXplID0gMTUpICsKICBnZW9tX2NvbChwb3NpdGlvbiA9ICJmaWxsIiwgd2lkdGggPSAwLjUpICsKICB4bGFiKCJDbHVzdGVyIikgKwogIHlsYWIoIlByb3BvcnRpb24iKSArCiAgdGhlbWUobGVnZW5kLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiKQojcHJpbnQocGxvdCwgdnAgPSB2aWV3cG9ydChhbmdsZSA9IDkwKSkKcGxvdCArIGNvb3JkX2ZsaXAoKQpwZGYoZmlsZSA9ICcuL2ZpZ3VyZXMvc3RpbXVsYXRpb24vZG93bnNhbXBsZWRfdGlzc3VlX3R5cGVfYmFycGxvdC5wZGYnLAogICAgaGVpZ2h0ID0gNSwgd2lkdGggPSA3KQpwbG90ICsgY29vcmRfZmxpcCgpCmRldi5vZmYoKQpgYGAKCkNhbGN1bGF0ZSBhbGwgREUgZ2VuZXMKCmBgYHtyfQphbGwubWFya2VycyA8LSBGaW5kQWxsTWFya2VycyhzY1NldXJhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seS5wb3MgPSBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4ucGN0ID0gMC4yNSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZjLnRocmVzaG9sZCA9IDAuMjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29ycmVjdF91bWkgPSBGQUxTRSkKdG9wLm1hcmtlcnMgPC0gYWxsLm1hcmtlcnMgJT4lIGdyb3VwX2J5KGNsdXN0ZXIpICU+JSB0b3BfbihuID0gMTAsIHd0ID0gYXZnX2xvZzJGQykKdG9wLm1hcmtlcnMKd3JpdGUudGFibGUoYWxsLm1hcmtlcnMsCiAgICAgICAgICAgIGZpbGUgPSAiLi9maWd1cmVzL3N0aW11bGF0aW9uL2Rvd25zYW1wbGVkX2NsdXN0ZXJfbWFya2Vycy50c3YiLAogICAgICAgICAgICBzZXAgPSAiXHQiLAogICAgICAgICAgICBxdW90ZSA9IEZBTFNFLAogICAgICAgICAgICByb3cubmFtZXMgPSBGQUxTRSkKYGBgCgpDYWxjdWxhdGUgREUgZ2VuZXM6IGZvciBlYWNoIGNsdXN0ZXIsIGNvbXBhcmUgc3RpbSBWUyB1bnN0aW0KCmBgYHtyfQpmb3IgKGNsdXN0IGluIGxldmVscyhhcy5mYWN0b3IoSWRlbnRzKHNjU2V1cmF0KSkpKSB7CiAgY2VsbHNfc3RpbSA8LSBjb2xuYW1lcyhzY1NldXJhdClbSWRlbnRzKHNjU2V1cmF0KSA9PSBjbHVzdCAmIHNjU2V1cmF0JHRpc3N1ZV90eXBlID09ICI2aHJzX1BNQUlPIl0KICBjZWxsc191bnN0aW0gPC0gY29sbmFtZXMoc2NTZXVyYXQpW0lkZW50cyhzY1NldXJhdCkgPT0gY2x1c3QgJiBzY1NldXJhdCR0aXNzdWVfdHlwZSA9PSAiNmhyc191bnN0aW0iXQogIG1hcmtlcnMgPC0gUnVuUHJlc3RvKHNjU2V1cmF0LAogICAgICAgICAgICAgICAgICAgICAgIGlkZW50LjEgPSBjZWxsc19zdGltLAogICAgICAgICAgICAgICAgICAgICAgIGlkZW50LjIgPSBjZWxsc191bnN0aW0sCiAgICAgICAgICAgICAgICAgICAgICAgb25seS5wb3MgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICBtaW4ucGN0ID0gMC4yNSwKICAgICAgICAgICAgICAgICAgICAgICBsb2dmYy50aHJlc2hvbGQgPSAwLjI1LAogICAgICAgICAgICAgICAgICAgICAgIHJlY29ycmVjdF91bWkgPSBGQUxTRSkKICB3cml0ZS50YWJsZShtYXJrZXJzLAogICAgICAgICAgICAgIGZpbGUgPSBwYXN0ZSgiLi9maWd1cmVzL3N0aW11bGF0aW9uL2Rvd25zYW1wbGVkX21hcmtlcnNfY2x1c3RlciIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdCAsIl9zdGltX3ZzX3Vuc3RpbS50c3YiLCBzZXAgPSAiIiksCiAgICAgICAgICAgICAgc2VwID0gIlx0IiwKICAgICAgICAgICAgICBxdW90ZSA9IEZBTFNFLAogICAgICAgICAgICAgIHJvdy5uYW1lcyA9IFRSVUUpCn0KYGBgCgpMb29rIGZvciBULWNlbGwgc2lnbmF0dXJlcy4KCmBgYHtyfQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJDRDNFIiwgIk5LRzciKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiTEVGMSIsICJYQ0wxO1hDTDIiKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiVE9YIiwgIkNEOEEiKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiQ0NSNyIpKQpgYGAKCkxvb2sgZm9yIG1hY3JvcGhhZ2Ugc2lnbmF0dXJlczoKCmBgYHtyfQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJMR0FMUzEiLCAiVFlST0JQIikpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlcyA9IGMoIk1BUkNPIiwgIkMxUUMiKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiTFlaLTEiLCAiUzEwMEE4IikpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlcyA9IGMoIkRFRkE2O0RFRkE0O0RFRkE1IiwgIkNUU1MiKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiRkxUMyIsICJTMTAwQTEyIikpCmBgYAoKTG9vayBmb3IgQiBhbmQgcGxhc21hIGNlbGwgc2lnbmF0dXJlcwoKYGBge3J9CkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlcyA9IGMoIkNENzlCIiwgIkpDSEFJTiIpKQpgYGAKCgpDbHVzdGVyIDEyIGlzIHRoZSBvbmx5IGNsdXN0ZXIgdGhhdCBpcyBvYnZpb3VzbHkgZG9taW5hdGVkIGJ5IHRoZSB1bnN0aW11bGF0ZWQgZXhwZXJpbWVudHMuIFdoYXQgY2VsbHMgYXJlIHRoZXNlPyBMb29rcyBsaWtlIHRoZXkgYXJlIGhlcGF0b2N5dGVzLiBBIGxvdCBvZiB0aGUgbWFya2VycyBhcmUgcGVyaXBvcnRhbCwgYnV0IGFsbCBoZXBhdG9jeXRlcyBhcmUgaW4gdGhpcyBjbHVzdGVyLgoKYGBge3J9CiMgSXNvbGF0ZSBERSBnZW5lcwpjbHVzdDExIDwtIHNDVmRhdGFfbGlzdCRyZXMuMC40QERFdnNSZXN0JGAxMmBbb3JkZXIoc0NWZGF0YV9saXN0JHJlcy4wLjRAREV2c1Jlc3QkYDEyYCRXc3RhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3JlYXNpbmcgPSBUUlVFKSwgXQpyb3duYW1lcyhjbHVzdDExKVsxOjUwXQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJQQUgiLCJQQ0sxIikpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlcyA9IGMoIkNZUDJFMSIsIkZFVFVCIikpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlcyA9IGMoIkFDQUNCIiwiRUxPVkw2IikpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlcyA9IGMoIlBPTFIyRCIsICJBTEItMSIpKQpgYGAKCkxldCdzIGxvb2sgYXQgc29tZSBvZiB0aGUga2V5IG1hcmtlcnMgdGhhdCBTb255YSBzZW50OiBJTDIsIElMNCwgSUw2LCBJTDcsIElMMTAsIElMMTJBLCBUR0ZCCgpgYGB7cn0KRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiSUwyIiwgIklMNCIpKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJJTDYiLCAiSUw2LTEiKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiSUw3IiwgIklMMTAiKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiSUwxMkEiLCAiVEdGQjEiKSkKYGBgCgpJdCdzIHByZXR0eSBoYXJkIHRvIHNlZSB3aGljaCBjeXRva2luZXMgYXJlIGV4cHJlc3NlZCBpbiB3aGljaCBzYW1wbGVzLCBzbyBJJ20gZ29pbmcgdG8gdHJ5IHNwbGl0dGluZyB1cCB0aGUgc2FtcGxlcy4KCmBgYHtyfQpEaW1QbG90KHNjU2V1cmF0LCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIsIGxhYmVsID0gVFJVRSkgJiBOb0xlZ2VuZCgpCnBkZihmaWxlID0gJy4vZmlndXJlcy9zdGltdWxhdGlvbi9kb3duc2FtcGxlZF9VTUFQX3NwbGl0LnBkZicsCiAgICBoZWlnaHQgPSA0LCB3aWR0aCA9IDgpCkRpbVBsb3Qoc2NTZXVyYXQsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIiwgbGFiZWwgPSBUUlVFKSAmIE5vTGVnZW5kKCkKZGV2Lm9mZigpCmBgYAoKTm93IGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBmZWF0dXJlcyBvbiB0aGlzIHNwbGl0IHBsb3QuCgpgYGB7cn0KZ2VuZXMgPC0gYygiSUwyIiwiSUw0IiwiSUw2IiwiSUw3IiwiSUwxMCIsIklMMTJBIiwiVEdGQjEiLCJUR0ZCMiIsIlRHRkIzIiwiVE5GIiwiSUwxOCIsIklMMlJBIiwiQ0NMNSIsIklGTkciLCJMSUYiLCAiQ0NMM0wxO0NDTDNMMztDQ0wzO0NDTDE4IiwiQ0NMNEwyO0NDTDRMMTtDQ0w0IikKZm9yIChnZW5lIGluIGdlbmVzKSB7CiAgcHJpbnQoRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSBnZW5lLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpKQogIHBkZihwYXN0ZSgiZmlndXJlcy9zdGltdWxhdGlvbi9kb3duc2FtcGxlZF9VTUFQX3NwbGl0XyIsIGdlbmUsICIucGRmIiwgc2VwID0gIiIpLAogICAgICBoZWlnaHQgPSA0LCB3aWR0aCA9IDgpCiAgcHJpbnQoRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSBnZW5lLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpKQogIGRldi5vZmYoKQp9CmBgYAoKTW9yZSBwbG90cwoKYGBge3J9CkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMTUiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMTYiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMTdCIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDZTVCIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwzMVJBIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDdSIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDdSLTEiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMTdEIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDVSQSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikgCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMTdSRSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikgCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMTdSQyIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwxN0MiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMzQiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMNEkxIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDExIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDlSIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDRSIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDIxUiIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwyNyIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUxLIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDE4QlAiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMTBSQSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwzIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJDU0YyIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJRk5LIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDkiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMTMiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIk9TTSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiTElGIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJTVEFUMSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiU1RBVDQiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMNCIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUw0STEiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIkNENjkiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIlRMUjciLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIkhMQS1EUkEiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMTJBIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJUTFIyIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJORktCMSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiQUNUQiIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiUFRQUkMiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIkNEM0UiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIlRCUCIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiU0RIQSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKYGBgCgoKQ2x1c3RlciAyIGxvb2tzIGxpa2UgaXQgZ2VuZXJhbGx5IGhhcyBtb3JlIElMIGdlbmVzIGV4cHJlc3NlZC4gSXNvbGF0ZSBERSBnZW5lcyBmb3IgdGhpcyBjbHVzdGVyLgoKYGBge3J9CmNsdXN0MSA8LSBzQ1ZkYXRhX2xpc3QkcmVzLjAuNEBERXZzUmVzdCRgMmBbb3JkZXIoc0NWZGF0YV9saXN0JHJlcy4wLjRAREV2c1Jlc3QkYDJgJFdzdGF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVhc2luZyA9IFRSVUUpLCBdCmNhdChyb3duYW1lcyhjbHVzdDEpWzE6NTBdKQpgYGAKClZpc3VhbGlzZSB0aGVzZSBnZW5lcyBpbiB2aW9saW4gcGxvdHMuCgoqKkludGVycHJldGF0aW9uKio6IE5vdyBJIHNlZSB0aGF0IElMMiBhbmQgSUw0IGFyZSBleHByZXNzZWQgaW4gbW9yZSB0aGFuIGp1c3QgY2x1c3RlciAyLCBidXQgaXQgaXMgbmVhcmx5IGFsd2F5cyBpbiBQTUFJTy4gQ2x1c3RlciA4IGlzIGRlZmluaXRlbHkgd2hlcmUgSUw2IGlzIGV4cHJlc3NlZC4gSUw3IGlzIGEgYml0IG1vcmUgc3ByZWFkIG91dCBhY3Jvc3MgdHJlYXRtZW50IHR5cGVzLCBidXQgaXQncyBkZWZpbml0ZWx5IHByZXNlbnQgaW4gUE1BSU8gaW4gY2x1c3RlcnMgNCwgNSwgYW5kIDExLiBDbHVzdGVyIDExIGlzIHBsYXNtYSBjZWxscywgYnV0IEknbSBob25lc3RseSBub3Qgc3VyZSBvZiA0IGFuZCA1IC0gbG93IHNpZ25hbCBoZXBhdG9jeXRlcz8gSUwxMCBpcyBpbiBjbHVzdGVycyAyIGFuZCAxMSBQTUFJTy4gSUwxMkEgaXMgYSBiaXQgbW9yZSBpbiA0IGFuZCA1IFBNQUlPLgoKYGBge3J9ClZsblBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwyIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKSAjIE9ubHkgaW4gUE1BSU8gY2x1c3RlciAyClZsblBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUw0Iiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKSAjIE9ubHkgaW4gUE1BSU8gY2x1c3RlciAyClZsblBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUw2Iiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKSAjIFN0cm9uZ2VyIGluIGVuZG8gYW5kIG1lc2VtIFBNQUlPClZsblBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUw2LTEiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpICMgTm8gc2lnbmFsClZsblBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUw3Iiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKSAjIE1vcmUgaW4gUE1BSU8gY2x1c3RlciA0LzUKVmxuUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDEwIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKSAjIE1vcmUgaW4gUE1BSU8gY2x1c3RlciAyClZsblBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwxMkEiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpICMgQSBiaXQgbW9yZSBpbiAxLDQsNQpWbG5QbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIlRHRkIxIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKSAjIFByZXR0eSBldmVuIGFjcm9zcyBhbGwKVmxuUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJUTkYiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCmBgYAoKTWFrZSBWaW9saW4gcGxvdHMgd2l0aCBnZ3Bsb3QKCmBgYHtyfQpnZW5lcyA8LSBjKCJJTDIiLCJJTDQiLCJJTDYiLCJJTDciLCJJTDEwIiwiSUwxMkEiLCJUR0ZCMSIsIlRHRkIyIiwiVEdGQjMiLCJUTkYiLCJJTDE4IiwiSUwyUkEiLCJDQ0w1IiwiSUZORyIsIkxJRiIsIkNDTDNMMTtDQ0wzTDM7Q0NMMztDQ0wxOCIsIkNDTDRMMjtDQ0w0TDE7Q0NMNCIpCmZvcihnZW5lIGluIGdlbmVzKSB7CiAgdmxuX2RmID0gZGF0YS5mcmFtZShnZW5lID0gc2NTZXVyYXRbWyJSTkEiXV1AZGF0YVtnZW5lLF0sIAogICAgICAgICAgICAgICAgICAgICAgQ2x1c3RlciA9IElkZW50cyhzY1NldXJhdCksIAogICAgICAgICAgICAgICAgICAgICAgdGlzc3VlX3R5cGUgPSBzY1NldXJhdCR0aXNzdWVfdHlwZSkKICBwbG90IDwtIGdncGxvdCh2bG5fZGYsIGFlcyh4ID0gQ2x1c3RlciwgeSA9IGdlbmUpKSArIAogICAgZ2VvbV92aW9saW4oYWVzKGZpbGwgPSB0aXNzdWVfdHlwZSksIHRyaW09VFJVRSwgc2NhbGUgPSAid2lkdGgiKSArCiAgICB5bGFiKGdlbmUpICsKICAgIHRoZW1lX2J3KCkKICBwcmludChwbG90KQogIHBkZihmaWxlID0gcGFzdGUoImZpZ3VyZXMvc3RpbXVsYXRpb24vZG93bnNhbXBsZWRfdmxuUGxvdF9zcGxpdF8iLCBnZW5lLCAiLnBkZiIsIHNlcCA9ICIiKSkKICBwcmludChwbG90KSAjIE5lZWQgcHJpbnQgZnVuY3Rpb24gYmVjYXVzZSBSIGRvZXNuJ3QgYXV0b3ByaW50IGluIGxvb3BzCiAgZGV2Lm9mZigpCn0KYGBgCgpMb29raW5nIGZvciBtb3JlIGdlbmVzCgpgYGB7cn0KZ2VuZSA8LSAiSUwxOCIKdmxuX2RmID0gZGF0YS5mcmFtZShnZW5lID0gc2NTZXVyYXRbWyJSTkEiXV1AZGF0YVtnZW5lLF0sIAogICAgICAgICAgICAgICAgICAgIENsdXN0ZXIgPSBJZGVudHMoc2NTZXVyYXQpLCAKICAgICAgICAgICAgICAgICAgICB0aXNzdWVfdHlwZSA9IHNjU2V1cmF0JHRpc3N1ZV90eXBlKQpwbG90IDwtIGdncGxvdCh2bG5fZGYsIGFlcyh4ID0gQ2x1c3RlciwgeSA9IGdlbmUpKSArIAogIGdlb21fdmlvbGluKGFlcyhmaWxsID0gdGlzc3VlX3R5cGUpLCB0cmltPVRSVUUsIHNjYWxlID0gIndpZHRoIikgKwogIHlsYWIoZ2VuZSkgKwogIHRoZW1lX2J3KCkKcHJpbnQocGxvdCkKYGBgCgpNYWtlIGhlYXRtYXAgd2l0aCBzZWxlY3QgZ2VuZXMKCmBgYHtyfQpnZW5lcyA8LSBjKCJJTDIiLCJJTDQiLCJJTDYiLCJJTDciLCJJTDEwIiwiSUwxMkEiLCJUR0ZCMSIsIlRHRkIyIiwiVEdGQjMiLCJUTkYiLCJJTDE4IiwiSUwyUkEiLCJDQ0w1IiwiSUZORyIsIkxJRiIsIkNDTDNMMTtDQ0wzTDM7Q0NMMztDQ0wxOCIsIkNDTDRMMjtDQ0w0TDE7Q0NMNCIpCkRvSGVhdG1hcChzY1NldXJhdCwgZmVhdHVyZXMgPSBnZW5lcywgZ3JvdXAuYnkgPSAiaW50ZWdyYXRlZF9zbm5fcmVzLjAuNCIsCiAgICAgICAgICBzaXplID0gMywgCiAgICAgICAgICBhbmdsZSA9IDkwLCBhc3NheSA9ICJSTkEiLCBzbG90ID0gImRhdGEiKSArCiAgTm9MZWdlbmQoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNykpCkRvdFBsb3Qoc2NTZXVyYXQsCiAgICAgICAgYXNzYXkgPSAiUk5BIiwKICAgICAgICBmZWF0dXJlcyA9IGdlbmVzLAogICAgICAgIGdyb3VwLmJ5ID0gImludGVncmF0ZWRfc25uX3Jlcy4wLjQiLAogICAgICAgIHNwbGl0LmJ5ID0gICJ0aXNzdWVfdHlwZSIpCkRvdFBsb3Qoc2NTZXVyYXQsCiAgICAgICAgYXNzYXkgPSAiUk5BIiwKICAgICAgICBmZWF0dXJlcyA9IGdlbmVzLAogICAgICAgIGdyb3VwLmJ5ID0gInRpc3N1ZV90eXBlIikKRG90UGxvdChzY1NldXJhdCwKICAgICAgICBhc3NheSA9ICJSTkEiLAogICAgICAgIGZlYXR1cmVzID0gZ2VuZXMsCiAgICAgICAgZ3JvdXAuYnkgPSAiaW50ZWdyYXRlZF9zbm5fcmVzLjAuNCIpCmBgYAoKClBlcmZvcm0gREUgdGVzdCBvbiBULWNlbGxzIGZyb20gUE1BSU8gdnMgdW5zdGltIFQtY2VsbHMuIEkgc2VlICpUTkYsIElMMlJBKiwgYnV0IEkgYWxzbyBzZWUgaGVwYXRvY3l0ZSBnZW5lcyBsaWtlICpBTEItMSwgU1RBVDMqCgpgYGB7cn0KIyBGZXRjaCBjZWxscyB0byBmaW5kIG91dCByZWxldmFudCBjZWxsIGJhcmNvZGVzCmJhcmNvZGVfZGYgPC0gRmV0Y2hEYXRhKHNjU2V1cmF0LCB2YXJzID0gYygidGlzc3VlX3R5cGUiLCAiaW50ZWdyYXRlZF9zbm5fcmVzLjAuNCIpKQpiYXJjb2RlX2RmJGJhcmNvZGUgPC0gcm93bmFtZXMoYmFyY29kZV9kZikKIyBGaWx0ZXIgb24gZGF0YSBzdWJzZXRzIGFuZCBwdWxsIGJhcmNvZGUgbmFtZXMKY2VsbHMxIDwtIGJhcmNvZGVfZGYgJT4lCiAgZmlsdGVyKHRpc3N1ZV90eXBlID09ICI2aHJzX1BNQUlPIikgJT4lCiAgZmlsdGVyKGludGVncmF0ZWRfc25uX3Jlcy4wLjQgJWluJSBjKDIsNikpICU+JQogIHB1bGwoYmFyY29kZSkKY2VsbHMyIDwtIGJhcmNvZGVfZGYgJT4lCiAgZmlsdGVyKHRpc3N1ZV90eXBlID09ICI2aHJzX3Vuc3RpbSIpICU+JQogIGZpbHRlcihpbnRlZ3JhdGVkX3Nubl9yZXMuMC40ICVpbiUgYygyLDYpKSAlPiUKICBwdWxsKGJhcmNvZGUpCiMgUHJlcCBmb3IgREUgdGVzdGluZwpzY1NldXJhdCA8LSBQcmVwU0NURmluZE1hcmtlcnMoc2NTZXVyYXQpCiMgUGVyZm9ybSBERSB0ZXN0CmRlX3Jlc3VsdHMgPC0gRmluZE1hcmtlcnMoc2NTZXVyYXQsCiAgICAgICAgICAgIGlkZW50LjEgPSBjZWxsczEsCiAgICAgICAgICAgIGlkZW50LjIgPSBjZWxsczIpCmNhdChyb3cubmFtZXMoZGVfcmVzdWx0cylbMToxMDBdLCBzZXAgPSAiICIpCmBgYAoKCg==